package org.xtext.tcc.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.xtext.tcc.services.TccdslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalTccdslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'typedef'", "'mapsto'", "'.'", "'entity'", "'extends'", "'functions'", "'*'", "'void'", "'('", "')'"
    };
    public static final int RULE_ID=4;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__19=19;
    public static final int RULE_STRING=6;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=5;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalTccdslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalTccdslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalTccdslParser.tokenNames; }
    public String getGrammarFileName() { return "../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g"; }



     	private TccdslGrammarAccess grammarAccess;
     	
        public InternalTccdslParser(TokenStream input, TccdslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Model";	
       	}
       	
       	@Override
       	protected TccdslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleModel"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:67:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:68:2: (iv_ruleModel= ruleModel EOF )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:69:2: iv_ruleModel= ruleModel EOF
            {
             newCompositeNode(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel75);
            iv_ruleModel=ruleModel();

            state._fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:76:1: ruleModel returns [EObject current=null] : ( (lv_types_0_0= ruleType ) )* ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject lv_types_0_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:79:28: ( ( (lv_types_0_0= ruleType ) )* )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:80:1: ( (lv_types_0_0= ruleType ) )*
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:80:1: ( (lv_types_0_0= ruleType ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==11||LA1_0==14||LA1_0==17) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:81:1: (lv_types_0_0= ruleType )
            	    {
            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:81:1: (lv_types_0_0= ruleType )
            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:82:3: lv_types_0_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getTypesTypeParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleModel130);
            	    lv_types_0_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"types",
            	            		lv_types_0_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRuleType"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:106:1: entryRuleType returns [EObject current=null] : iv_ruleType= ruleType EOF ;
    public final EObject entryRuleType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleType = null;


        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:107:2: (iv_ruleType= ruleType EOF )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:108:2: iv_ruleType= ruleType EOF
            {
             newCompositeNode(grammarAccess.getTypeRule()); 
            pushFollow(FOLLOW_ruleType_in_entryRuleType166);
            iv_ruleType=ruleType();

            state._fsp--;

             current =iv_ruleType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleType176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleType"


    // $ANTLR start "ruleType"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:115:1: ruleType returns [EObject current=null] : (this_Package_0= rulePackage | this_TypeDef_1= ruleTypeDef | this_Entity_2= ruleEntity ) ;
    public final EObject ruleType() throws RecognitionException {
        EObject current = null;

        EObject this_Package_0 = null;

        EObject this_TypeDef_1 = null;

        EObject this_Entity_2 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:118:28: ( (this_Package_0= rulePackage | this_TypeDef_1= ruleTypeDef | this_Entity_2= ruleEntity ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:119:1: (this_Package_0= rulePackage | this_TypeDef_1= ruleTypeDef | this_Entity_2= ruleEntity )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:119:1: (this_Package_0= rulePackage | this_TypeDef_1= ruleTypeDef | this_Entity_2= ruleEntity )
            int alt2=3;
            switch ( input.LA(1) ) {
            case 11:
                {
                alt2=1;
                }
                break;
            case 14:
                {
                alt2=2;
                }
                break;
            case 17:
                {
                alt2=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }

            switch (alt2) {
                case 1 :
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:120:5: this_Package_0= rulePackage
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getPackageParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_rulePackage_in_ruleType223);
                    this_Package_0=rulePackage();

                    state._fsp--;

                     
                            current = this_Package_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:130:5: this_TypeDef_1= ruleTypeDef
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getTypeDefParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleTypeDef_in_ruleType250);
                    this_TypeDef_1=ruleTypeDef();

                    state._fsp--;

                     
                            current = this_TypeDef_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:140:5: this_Entity_2= ruleEntity
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getEntityParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleEntity_in_ruleType277);
                    this_Entity_2=ruleEntity();

                    state._fsp--;

                     
                            current = this_Entity_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleType"


    // $ANTLR start "entryRulePackage"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:156:1: entryRulePackage returns [EObject current=null] : iv_rulePackage= rulePackage EOF ;
    public final EObject entryRulePackage() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackage = null;


        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:157:2: (iv_rulePackage= rulePackage EOF )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:158:2: iv_rulePackage= rulePackage EOF
            {
             newCompositeNode(grammarAccess.getPackageRule()); 
            pushFollow(FOLLOW_rulePackage_in_entryRulePackage312);
            iv_rulePackage=rulePackage();

            state._fsp--;

             current =iv_rulePackage; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackage322); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackage"


    // $ANTLR start "rulePackage"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:165:1: rulePackage returns [EObject current=null] : (otherlv_0= 'package' ( (lv_name_1_0= ruleJAVAID ) ) otherlv_2= '{' ( (lv_types_3_0= ruleType ) )* otherlv_4= '}' ) ;
    public final EObject rulePackage() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_types_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:168:28: ( (otherlv_0= 'package' ( (lv_name_1_0= ruleJAVAID ) ) otherlv_2= '{' ( (lv_types_3_0= ruleType ) )* otherlv_4= '}' ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:169:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleJAVAID ) ) otherlv_2= '{' ( (lv_types_3_0= ruleType ) )* otherlv_4= '}' )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:169:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleJAVAID ) ) otherlv_2= '{' ( (lv_types_3_0= ruleType ) )* otherlv_4= '}' )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:169:3: otherlv_0= 'package' ( (lv_name_1_0= ruleJAVAID ) ) otherlv_2= '{' ( (lv_types_3_0= ruleType ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_rulePackage359); 

                	newLeafNode(otherlv_0, grammarAccess.getPackageAccess().getPackageKeyword_0());
                
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:173:1: ( (lv_name_1_0= ruleJAVAID ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:174:1: (lv_name_1_0= ruleJAVAID )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:174:1: (lv_name_1_0= ruleJAVAID )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:175:3: lv_name_1_0= ruleJAVAID
            {
             
            	        newCompositeNode(grammarAccess.getPackageAccess().getNameJAVAIDParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleJAVAID_in_rulePackage380);
            lv_name_1_0=ruleJAVAID();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPackageRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"JAVAID");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_rulePackage392); 

                	newLeafNode(otherlv_2, grammarAccess.getPackageAccess().getLeftCurlyBracketKeyword_2());
                
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:195:1: ( (lv_types_3_0= ruleType ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==11||LA3_0==14||LA3_0==17) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:196:1: (lv_types_3_0= ruleType )
            	    {
            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:196:1: (lv_types_3_0= ruleType )
            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:197:3: lv_types_3_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getPackageAccess().getTypesTypeParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_rulePackage413);
            	    lv_types_3_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getPackageRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"types",
            	            		lv_types_3_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

            otherlv_4=(Token)match(input,13,FOLLOW_13_in_rulePackage426); 

                	newLeafNode(otherlv_4, grammarAccess.getPackageAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackage"


    // $ANTLR start "entryRuleTypeDef"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:225:1: entryRuleTypeDef returns [EObject current=null] : iv_ruleTypeDef= ruleTypeDef EOF ;
    public final EObject entryRuleTypeDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeDef = null;


        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:226:2: (iv_ruleTypeDef= ruleTypeDef EOF )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:227:2: iv_ruleTypeDef= ruleTypeDef EOF
            {
             newCompositeNode(grammarAccess.getTypeDefRule()); 
            pushFollow(FOLLOW_ruleTypeDef_in_entryRuleTypeDef462);
            iv_ruleTypeDef=ruleTypeDef();

            state._fsp--;

             current =iv_ruleTypeDef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTypeDef472); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTypeDef"


    // $ANTLR start "ruleTypeDef"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:234:1: ruleTypeDef returns [EObject current=null] : (otherlv_0= 'typedef' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) ) )? ) ;
    public final EObject ruleTypeDef() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_mappedType_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:237:28: ( (otherlv_0= 'typedef' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) ) )? ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:238:1: (otherlv_0= 'typedef' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) ) )? )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:238:1: (otherlv_0= 'typedef' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) ) )? )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:238:3: otherlv_0= 'typedef' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) ) )?
            {
            otherlv_0=(Token)match(input,14,FOLLOW_14_in_ruleTypeDef509); 

                	newLeafNode(otherlv_0, grammarAccess.getTypeDefAccess().getTypedefKeyword_0());
                
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:242:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:243:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:243:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:244:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTypeDef526); 

            			newLeafNode(lv_name_1_0, grammarAccess.getTypeDefAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTypeDefRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:260:2: (otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) ) )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==15) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:260:4: otherlv_2= 'mapsto' ( (lv_mappedType_3_0= ruleJAVAID ) )
                    {
                    otherlv_2=(Token)match(input,15,FOLLOW_15_in_ruleTypeDef544); 

                        	newLeafNode(otherlv_2, grammarAccess.getTypeDefAccess().getMapstoKeyword_2_0());
                        
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:264:1: ( (lv_mappedType_3_0= ruleJAVAID ) )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:265:1: (lv_mappedType_3_0= ruleJAVAID )
                    {
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:265:1: (lv_mappedType_3_0= ruleJAVAID )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:266:3: lv_mappedType_3_0= ruleJAVAID
                    {
                     
                    	        newCompositeNode(grammarAccess.getTypeDefAccess().getMappedTypeJAVAIDParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleJAVAID_in_ruleTypeDef565);
                    lv_mappedType_3_0=ruleJAVAID();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getTypeDefRule());
                    	        }
                           		set(
                           			current, 
                           			"mappedType",
                            		lv_mappedType_3_0, 
                            		"JAVAID");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTypeDef"


    // $ANTLR start "entryRuleJAVAID"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:290:1: entryRuleJAVAID returns [String current=null] : iv_ruleJAVAID= ruleJAVAID EOF ;
    public final String entryRuleJAVAID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleJAVAID = null;


        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:291:2: (iv_ruleJAVAID= ruleJAVAID EOF )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:292:2: iv_ruleJAVAID= ruleJAVAID EOF
            {
             newCompositeNode(grammarAccess.getJAVAIDRule()); 
            pushFollow(FOLLOW_ruleJAVAID_in_entryRuleJAVAID604);
            iv_ruleJAVAID=ruleJAVAID();

            state._fsp--;

             current =iv_ruleJAVAID.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleJAVAID615); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJAVAID"


    // $ANTLR start "ruleJAVAID"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:299:1: ruleJAVAID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleJAVAID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:302:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:303:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:303:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:303:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleJAVAID655); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getJAVAIDAccess().getIDTerminalRuleCall_0()); 
                
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:310:1: (kw= '.' this_ID_2= RULE_ID )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==16) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:311:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,16,FOLLOW_16_in_ruleJAVAID674); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getJAVAIDAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleJAVAID689); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        newLeafNode(this_ID_2, grammarAccess.getJAVAIDAccess().getIDTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJAVAID"


    // $ANTLR start "entryRuleEntity"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:331:1: entryRuleEntity returns [EObject current=null] : iv_ruleEntity= ruleEntity EOF ;
    public final EObject entryRuleEntity() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEntity = null;


        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:332:2: (iv_ruleEntity= ruleEntity EOF )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:333:2: iv_ruleEntity= ruleEntity EOF
            {
             newCompositeNode(grammarAccess.getEntityRule()); 
            pushFollow(FOLLOW_ruleEntity_in_entryRuleEntity736);
            iv_ruleEntity=ruleEntity();

            state._fsp--;

             current =iv_ruleEntity; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEntity746); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEntity"


    // $ANTLR start "ruleEntity"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:340:1: ruleEntity returns [EObject current=null] : (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* (otherlv_6= 'functions' otherlv_7= '{' ( (lv_functions_8_0= ruleFunction ) )* otherlv_9= '}' )? otherlv_10= '}' ) ;
    public final EObject ruleEntity() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        EObject lv_attributes_5_0 = null;

        EObject lv_functions_8_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:343:28: ( (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* (otherlv_6= 'functions' otherlv_7= '{' ( (lv_functions_8_0= ruleFunction ) )* otherlv_9= '}' )? otherlv_10= '}' ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:344:1: (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* (otherlv_6= 'functions' otherlv_7= '{' ( (lv_functions_8_0= ruleFunction ) )* otherlv_9= '}' )? otherlv_10= '}' )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:344:1: (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* (otherlv_6= 'functions' otherlv_7= '{' ( (lv_functions_8_0= ruleFunction ) )* otherlv_9= '}' )? otherlv_10= '}' )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:344:3: otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* (otherlv_6= 'functions' otherlv_7= '{' ( (lv_functions_8_0= ruleFunction ) )* otherlv_9= '}' )? otherlv_10= '}'
            {
            otherlv_0=(Token)match(input,17,FOLLOW_17_in_ruleEntity783); 

                	newLeafNode(otherlv_0, grammarAccess.getEntityAccess().getEntityKeyword_0());
                
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:348:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:349:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:349:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:350:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEntity800); 

            			newLeafNode(lv_name_1_0, grammarAccess.getEntityAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEntityRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:366:2: (otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) ) )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==18) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:366:4: otherlv_2= 'extends' ( (otherlv_3= RULE_ID ) )
                    {
                    otherlv_2=(Token)match(input,18,FOLLOW_18_in_ruleEntity818); 

                        	newLeafNode(otherlv_2, grammarAccess.getEntityAccess().getExtendsKeyword_2_0());
                        
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:370:1: ( (otherlv_3= RULE_ID ) )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:371:1: (otherlv_3= RULE_ID )
                    {
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:371:1: (otherlv_3= RULE_ID )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:372:3: otherlv_3= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getEntityRule());
                    	        }
                            
                    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEntity838); 

                    		newLeafNode(otherlv_3, grammarAccess.getEntityAccess().getSuperEntityEntityCrossReference_2_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,12,FOLLOW_12_in_ruleEntity852); 

                	newLeafNode(otherlv_4, grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_3());
                
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:387:1: ( (lv_attributes_5_0= ruleAttribute ) )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==RULE_ID) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:388:1: (lv_attributes_5_0= ruleAttribute )
            	    {
            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:388:1: (lv_attributes_5_0= ruleAttribute )
            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:389:3: lv_attributes_5_0= ruleAttribute
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getEntityAccess().getAttributesAttributeParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAttribute_in_ruleEntity873);
            	    lv_attributes_5_0=ruleAttribute();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getEntityRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"attributes",
            	            		lv_attributes_5_0, 
            	            		"Attribute");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:405:3: (otherlv_6= 'functions' otherlv_7= '{' ( (lv_functions_8_0= ruleFunction ) )* otherlv_9= '}' )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==19) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:405:5: otherlv_6= 'functions' otherlv_7= '{' ( (lv_functions_8_0= ruleFunction ) )* otherlv_9= '}'
                    {
                    otherlv_6=(Token)match(input,19,FOLLOW_19_in_ruleEntity887); 

                        	newLeafNode(otherlv_6, grammarAccess.getEntityAccess().getFunctionsKeyword_5_0());
                        
                    otherlv_7=(Token)match(input,12,FOLLOW_12_in_ruleEntity899); 

                        	newLeafNode(otherlv_7, grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_5_1());
                        
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:413:1: ( (lv_functions_8_0= ruleFunction ) )*
                    loop8:
                    do {
                        int alt8=2;
                        int LA8_0 = input.LA(1);

                        if ( (LA8_0==RULE_ID||LA8_0==21) ) {
                            alt8=1;
                        }


                        switch (alt8) {
                    	case 1 :
                    	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:414:1: (lv_functions_8_0= ruleFunction )
                    	    {
                    	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:414:1: (lv_functions_8_0= ruleFunction )
                    	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:415:3: lv_functions_8_0= ruleFunction
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getEntityAccess().getFunctionsFunctionParserRuleCall_5_2_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleFunction_in_ruleEntity920);
                    	    lv_functions_8_0=ruleFunction();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getEntityRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"functions",
                    	            		lv_functions_8_0, 
                    	            		"Function");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop8;
                        }
                    } while (true);

                    otherlv_9=(Token)match(input,13,FOLLOW_13_in_ruleEntity933); 

                        	newLeafNode(otherlv_9, grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_5_3());
                        

                    }
                    break;

            }

            otherlv_10=(Token)match(input,13,FOLLOW_13_in_ruleEntity947); 

                	newLeafNode(otherlv_10, grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_6());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEntity"


    // $ANTLR start "entryRuleAttribute"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:447:1: entryRuleAttribute returns [EObject current=null] : iv_ruleAttribute= ruleAttribute EOF ;
    public final EObject entryRuleAttribute() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAttribute = null;


        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:448:2: (iv_ruleAttribute= ruleAttribute EOF )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:449:2: iv_ruleAttribute= ruleAttribute EOF
            {
             newCompositeNode(grammarAccess.getAttributeRule()); 
            pushFollow(FOLLOW_ruleAttribute_in_entryRuleAttribute983);
            iv_ruleAttribute=ruleAttribute();

            state._fsp--;

             current =iv_ruleAttribute; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAttribute993); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAttribute"


    // $ANTLR start "ruleAttribute"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:456:1: ruleAttribute returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) ( (lv_many_1_0= '*' ) )? ( (lv_name_2_0= RULE_ID ) ) ) ;
    public final EObject ruleAttribute() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_many_1_0=null;
        Token lv_name_2_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:459:28: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_many_1_0= '*' ) )? ( (lv_name_2_0= RULE_ID ) ) ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:460:1: ( ( (otherlv_0= RULE_ID ) ) ( (lv_many_1_0= '*' ) )? ( (lv_name_2_0= RULE_ID ) ) )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:460:1: ( ( (otherlv_0= RULE_ID ) ) ( (lv_many_1_0= '*' ) )? ( (lv_name_2_0= RULE_ID ) ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:460:2: ( (otherlv_0= RULE_ID ) ) ( (lv_many_1_0= '*' ) )? ( (lv_name_2_0= RULE_ID ) )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:460:2: ( (otherlv_0= RULE_ID ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:461:1: (otherlv_0= RULE_ID )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:461:1: (otherlv_0= RULE_ID )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:462:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getAttributeRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAttribute1038); 

            		newLeafNode(otherlv_0, grammarAccess.getAttributeAccess().getTypeTypeCrossReference_0_0()); 
            	

            }


            }

            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:473:2: ( (lv_many_1_0= '*' ) )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==20) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:474:1: (lv_many_1_0= '*' )
                    {
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:474:1: (lv_many_1_0= '*' )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:475:3: lv_many_1_0= '*'
                    {
                    lv_many_1_0=(Token)match(input,20,FOLLOW_20_in_ruleAttribute1056); 

                            newLeafNode(lv_many_1_0, grammarAccess.getAttributeAccess().getManyAsteriskKeyword_1_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getAttributeRule());
                    	        }
                           		setWithLastConsumed(current, "many", true, "*");
                    	    

                    }


                    }
                    break;

            }

            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:488:3: ( (lv_name_2_0= RULE_ID ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:489:1: (lv_name_2_0= RULE_ID )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:489:1: (lv_name_2_0= RULE_ID )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:490:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAttribute1087); 

            			newLeafNode(lv_name_2_0, grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAttributeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAttribute"


    // $ANTLR start "entryRuleFunction"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:514:1: entryRuleFunction returns [EObject current=null] : iv_ruleFunction= ruleFunction EOF ;
    public final EObject entryRuleFunction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFunction = null;


        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:515:2: (iv_ruleFunction= ruleFunction EOF )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:516:2: iv_ruleFunction= ruleFunction EOF
            {
             newCompositeNode(grammarAccess.getFunctionRule()); 
            pushFollow(FOLLOW_ruleFunction_in_entryRuleFunction1128);
            iv_ruleFunction=ruleFunction();

            state._fsp--;

             current =iv_ruleFunction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFunction1138); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFunction"


    // $ANTLR start "ruleFunction"
    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:523:1: ruleFunction returns [EObject current=null] : ( (otherlv_0= 'void' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '(' ( (lv_parameters_3_0= ruleAttribute ) )* otherlv_4= ')' )? ) | ( ( (otherlv_5= RULE_ID ) ) ( (lv_many_6_0= '*' ) )? ( (lv_name_7_0= RULE_ID ) ) (otherlv_8= '(' ( (lv_parameters_9_0= ruleAttribute ) )* otherlv_10= ')' )? ) ) ;
    public final EObject ruleFunction() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token lv_many_6_0=null;
        Token lv_name_7_0=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        EObject lv_parameters_3_0 = null;

        EObject lv_parameters_9_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:526:28: ( ( (otherlv_0= 'void' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '(' ( (lv_parameters_3_0= ruleAttribute ) )* otherlv_4= ')' )? ) | ( ( (otherlv_5= RULE_ID ) ) ( (lv_many_6_0= '*' ) )? ( (lv_name_7_0= RULE_ID ) ) (otherlv_8= '(' ( (lv_parameters_9_0= ruleAttribute ) )* otherlv_10= ')' )? ) ) )
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:527:1: ( (otherlv_0= 'void' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '(' ( (lv_parameters_3_0= ruleAttribute ) )* otherlv_4= ')' )? ) | ( ( (otherlv_5= RULE_ID ) ) ( (lv_many_6_0= '*' ) )? ( (lv_name_7_0= RULE_ID ) ) (otherlv_8= '(' ( (lv_parameters_9_0= ruleAttribute ) )* otherlv_10= ')' )? ) )
            {
            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:527:1: ( (otherlv_0= 'void' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '(' ( (lv_parameters_3_0= ruleAttribute ) )* otherlv_4= ')' )? ) | ( ( (otherlv_5= RULE_ID ) ) ( (lv_many_6_0= '*' ) )? ( (lv_name_7_0= RULE_ID ) ) (otherlv_8= '(' ( (lv_parameters_9_0= ruleAttribute ) )* otherlv_10= ')' )? ) )
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==21) ) {
                alt16=1;
            }
            else if ( (LA16_0==RULE_ID) ) {
                alt16=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 16, 0, input);

                throw nvae;
            }
            switch (alt16) {
                case 1 :
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:527:2: (otherlv_0= 'void' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '(' ( (lv_parameters_3_0= ruleAttribute ) )* otherlv_4= ')' )? )
                    {
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:527:2: (otherlv_0= 'void' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '(' ( (lv_parameters_3_0= ruleAttribute ) )* otherlv_4= ')' )? )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:527:4: otherlv_0= 'void' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '(' ( (lv_parameters_3_0= ruleAttribute ) )* otherlv_4= ')' )?
                    {
                    otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleFunction1176); 

                        	newLeafNode(otherlv_0, grammarAccess.getFunctionAccess().getVoidKeyword_0_0());
                        
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:531:1: ( (lv_name_1_0= RULE_ID ) )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:532:1: (lv_name_1_0= RULE_ID )
                    {
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:532:1: (lv_name_1_0= RULE_ID )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:533:3: lv_name_1_0= RULE_ID
                    {
                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFunction1193); 

                    			newLeafNode(lv_name_1_0, grammarAccess.getFunctionAccess().getNameIDTerminalRuleCall_0_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getFunctionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_1_0, 
                            		"ID");
                    	    

                    }


                    }

                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:549:2: (otherlv_2= '(' ( (lv_parameters_3_0= ruleAttribute ) )* otherlv_4= ')' )?
                    int alt12=2;
                    int LA12_0 = input.LA(1);

                    if ( (LA12_0==22) ) {
                        alt12=1;
                    }
                    switch (alt12) {
                        case 1 :
                            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:549:4: otherlv_2= '(' ( (lv_parameters_3_0= ruleAttribute ) )* otherlv_4= ')'
                            {
                            otherlv_2=(Token)match(input,22,FOLLOW_22_in_ruleFunction1211); 

                                	newLeafNode(otherlv_2, grammarAccess.getFunctionAccess().getLeftParenthesisKeyword_0_2_0());
                                
                            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:553:1: ( (lv_parameters_3_0= ruleAttribute ) )*
                            loop11:
                            do {
                                int alt11=2;
                                int LA11_0 = input.LA(1);

                                if ( (LA11_0==RULE_ID) ) {
                                    alt11=1;
                                }


                                switch (alt11) {
                            	case 1 :
                            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:554:1: (lv_parameters_3_0= ruleAttribute )
                            	    {
                            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:554:1: (lv_parameters_3_0= ruleAttribute )
                            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:555:3: lv_parameters_3_0= ruleAttribute
                            	    {
                            	     
                            	    	        newCompositeNode(grammarAccess.getFunctionAccess().getParametersAttributeParserRuleCall_0_2_1_0()); 
                            	    	    
                            	    pushFollow(FOLLOW_ruleAttribute_in_ruleFunction1232);
                            	    lv_parameters_3_0=ruleAttribute();

                            	    state._fsp--;


                            	    	        if (current==null) {
                            	    	            current = createModelElementForParent(grammarAccess.getFunctionRule());
                            	    	        }
                            	           		add(
                            	           			current, 
                            	           			"parameters",
                            	            		lv_parameters_3_0, 
                            	            		"Attribute");
                            	    	        afterParserOrEnumRuleCall();
                            	    	    

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop11;
                                }
                            } while (true);

                            otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleFunction1245); 

                                	newLeafNode(otherlv_4, grammarAccess.getFunctionAccess().getRightParenthesisKeyword_0_2_2());
                                

                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:576:6: ( ( (otherlv_5= RULE_ID ) ) ( (lv_many_6_0= '*' ) )? ( (lv_name_7_0= RULE_ID ) ) (otherlv_8= '(' ( (lv_parameters_9_0= ruleAttribute ) )* otherlv_10= ')' )? )
                    {
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:576:6: ( ( (otherlv_5= RULE_ID ) ) ( (lv_many_6_0= '*' ) )? ( (lv_name_7_0= RULE_ID ) ) (otherlv_8= '(' ( (lv_parameters_9_0= ruleAttribute ) )* otherlv_10= ')' )? )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:576:7: ( (otherlv_5= RULE_ID ) ) ( (lv_many_6_0= '*' ) )? ( (lv_name_7_0= RULE_ID ) ) (otherlv_8= '(' ( (lv_parameters_9_0= ruleAttribute ) )* otherlv_10= ')' )?
                    {
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:576:7: ( (otherlv_5= RULE_ID ) )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:577:1: (otherlv_5= RULE_ID )
                    {
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:577:1: (otherlv_5= RULE_ID )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:578:3: otherlv_5= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getFunctionRule());
                    	        }
                            
                    otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFunction1275); 

                    		newLeafNode(otherlv_5, grammarAccess.getFunctionAccess().getTypeTypeCrossReference_1_0_0()); 
                    	

                    }


                    }

                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:589:2: ( (lv_many_6_0= '*' ) )?
                    int alt13=2;
                    int LA13_0 = input.LA(1);

                    if ( (LA13_0==20) ) {
                        alt13=1;
                    }
                    switch (alt13) {
                        case 1 :
                            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:590:1: (lv_many_6_0= '*' )
                            {
                            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:590:1: (lv_many_6_0= '*' )
                            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:591:3: lv_many_6_0= '*'
                            {
                            lv_many_6_0=(Token)match(input,20,FOLLOW_20_in_ruleFunction1293); 

                                    newLeafNode(lv_many_6_0, grammarAccess.getFunctionAccess().getManyAsteriskKeyword_1_1_0());
                                

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getFunctionRule());
                            	        }
                                   		setWithLastConsumed(current, "many", true, "*");
                            	    

                            }


                            }
                            break;

                    }

                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:604:3: ( (lv_name_7_0= RULE_ID ) )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:605:1: (lv_name_7_0= RULE_ID )
                    {
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:605:1: (lv_name_7_0= RULE_ID )
                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:606:3: lv_name_7_0= RULE_ID
                    {
                    lv_name_7_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFunction1324); 

                    			newLeafNode(lv_name_7_0, grammarAccess.getFunctionAccess().getNameIDTerminalRuleCall_1_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getFunctionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_7_0, 
                            		"ID");
                    	    

                    }


                    }

                    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:622:2: (otherlv_8= '(' ( (lv_parameters_9_0= ruleAttribute ) )* otherlv_10= ')' )?
                    int alt15=2;
                    int LA15_0 = input.LA(1);

                    if ( (LA15_0==22) ) {
                        alt15=1;
                    }
                    switch (alt15) {
                        case 1 :
                            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:622:4: otherlv_8= '(' ( (lv_parameters_9_0= ruleAttribute ) )* otherlv_10= ')'
                            {
                            otherlv_8=(Token)match(input,22,FOLLOW_22_in_ruleFunction1342); 

                                	newLeafNode(otherlv_8, grammarAccess.getFunctionAccess().getLeftParenthesisKeyword_1_3_0());
                                
                            // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:626:1: ( (lv_parameters_9_0= ruleAttribute ) )*
                            loop14:
                            do {
                                int alt14=2;
                                int LA14_0 = input.LA(1);

                                if ( (LA14_0==RULE_ID) ) {
                                    alt14=1;
                                }


                                switch (alt14) {
                            	case 1 :
                            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:627:1: (lv_parameters_9_0= ruleAttribute )
                            	    {
                            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:627:1: (lv_parameters_9_0= ruleAttribute )
                            	    // ../org.xtext.tcc.dsl/src-gen/org/xtext/tcc/parser/antlr/internal/InternalTccdsl.g:628:3: lv_parameters_9_0= ruleAttribute
                            	    {
                            	     
                            	    	        newCompositeNode(grammarAccess.getFunctionAccess().getParametersAttributeParserRuleCall_1_3_1_0()); 
                            	    	    
                            	    pushFollow(FOLLOW_ruleAttribute_in_ruleFunction1363);
                            	    lv_parameters_9_0=ruleAttribute();

                            	    state._fsp--;


                            	    	        if (current==null) {
                            	    	            current = createModelElementForParent(grammarAccess.getFunctionRule());
                            	    	        }
                            	           		add(
                            	           			current, 
                            	           			"parameters",
                            	            		lv_parameters_9_0, 
                            	            		"Attribute");
                            	    	        afterParserOrEnumRuleCall();
                            	    	    

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop14;
                                }
                            } while (true);

                            otherlv_10=(Token)match(input,23,FOLLOW_23_in_ruleFunction1376); 

                                	newLeafNode(otherlv_10, grammarAccess.getFunctionAccess().getRightParenthesisKeyword_1_3_2());
                                

                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFunction"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_ruleModel130 = new BitSet(new long[]{0x0000000000024802L});
    public static final BitSet FOLLOW_ruleType_in_entryRuleType166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleType176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackage_in_ruleType223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeDef_in_ruleType250 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_ruleType277 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackage_in_entryRulePackage312 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackage322 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_rulePackage359 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleJAVAID_in_rulePackage380 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_rulePackage392 = new BitSet(new long[]{0x0000000000026800L});
    public static final BitSet FOLLOW_ruleType_in_rulePackage413 = new BitSet(new long[]{0x0000000000026800L});
    public static final BitSet FOLLOW_13_in_rulePackage426 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeDef_in_entryRuleTypeDef462 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTypeDef472 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_ruleTypeDef509 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTypeDef526 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_15_in_ruleTypeDef544 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleJAVAID_in_ruleTypeDef565 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJAVAID_in_entryRuleJAVAID604 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJAVAID615 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleJAVAID655 = new BitSet(new long[]{0x0000000000010002L});
    public static final BitSet FOLLOW_16_in_ruleJAVAID674 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleJAVAID689 = new BitSet(new long[]{0x0000000000010002L});
    public static final BitSet FOLLOW_ruleEntity_in_entryRuleEntity736 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEntity746 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleEntity783 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEntity800 = new BitSet(new long[]{0x0000000000041000L});
    public static final BitSet FOLLOW_18_in_ruleEntity818 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEntity838 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleEntity852 = new BitSet(new long[]{0x0000000000082010L});
    public static final BitSet FOLLOW_ruleAttribute_in_ruleEntity873 = new BitSet(new long[]{0x0000000000082010L});
    public static final BitSet FOLLOW_19_in_ruleEntity887 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleEntity899 = new BitSet(new long[]{0x0000000000202010L});
    public static final BitSet FOLLOW_ruleFunction_in_ruleEntity920 = new BitSet(new long[]{0x0000000000202010L});
    public static final BitSet FOLLOW_13_in_ruleEntity933 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleEntity947 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAttribute_in_entryRuleAttribute983 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAttribute993 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAttribute1038 = new BitSet(new long[]{0x0000000000100010L});
    public static final BitSet FOLLOW_20_in_ruleAttribute1056 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAttribute1087 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunction_in_entryRuleFunction1128 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFunction1138 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleFunction1176 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFunction1193 = new BitSet(new long[]{0x0000000000400002L});
    public static final BitSet FOLLOW_22_in_ruleFunction1211 = new BitSet(new long[]{0x0000000000800010L});
    public static final BitSet FOLLOW_ruleAttribute_in_ruleFunction1232 = new BitSet(new long[]{0x0000000000800010L});
    public static final BitSet FOLLOW_23_in_ruleFunction1245 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFunction1275 = new BitSet(new long[]{0x0000000000100010L});
    public static final BitSet FOLLOW_20_in_ruleFunction1293 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFunction1324 = new BitSet(new long[]{0x0000000000400002L});
    public static final BitSet FOLLOW_22_in_ruleFunction1342 = new BitSet(new long[]{0x0000000000800010L});
    public static final BitSet FOLLOW_ruleAttribute_in_ruleFunction1363 = new BitSet(new long[]{0x0000000000800010L});
    public static final BitSet FOLLOW_23_in_ruleFunction1376 = new BitSet(new long[]{0x0000000000000002L});

}